一、規劃
提:需要準備四臺服務器,每臺服務器上安裝了 mysql8 數據庫。
規劃:從 1 復制 主1 ,從 2 復制 主 2,主 1 復制 主 2,主 2 復制主 1,也就是 主 1 和主 2 互為主從。主1主2互為主從,是為了以下情景,主1掛了,主2自動升級為主數據庫,當主1恢復后,主1則變成次主數據庫。
舉個案例:1、在主1創建了一個數據庫,從1自動“復制”主1生成數據庫,
? ? ? ? ? ? ? ? ? 2、因為主2也是主1 的從數據庫,所以主2也“復制”主1生成數據庫,
? ? ? ? ? ? ? ? ? 3、主2有了數據庫,從2自動“復制”主2生成數據庫;
最后,四臺服務器數據庫都創建了數據庫。
二、修改 mysql 配置
主1? ?my.cnf? 添加如下配置
# bin log 日志
log-bin=/var/lib/mysql/binlog
# 服務id
server-id=1
#主從復制忽略的數據庫
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
#開啟主從復制的數據庫
binlog-do-db=mydb2
# bin log 日志格式
#STATEMENT:記錄主庫執行的SQL復制到從庫; 調用時間函數時會導致主從數據不一致
#ROW:記錄主庫每一行的變化;效率低
#MIXED:修復一些主從數據不一致情況;本地變量調用還會存在問題;@@hostname
binlog_format=statement
#二進制日志自動刪除/過期的天數。默認值為0,表示不自動刪除
expire_logs_days=7
#跳過主從復制中遇到的所有錯誤或指定類型的錯誤
slave_skip_errors=1062
#在作為從數據庫時候,有寫入操作也要更新二進制日志文件
log-slave-updates
#標識自增長字段每次遞增的量,也就是步長
auto-increment-increment=2
#表示自增長從哪個數開始
auto-increment-offset=1
主 2 ?my.cnf ?添加如下配置
# bin log 日志
log-bin=/var/lib/mysql/binlog
# # 服務id
server-id=3
# #主從復制忽略的數據庫
binlog-ignore-db=mysql
binlog-ignore-db=information_schema
# #開啟主從復制的數據庫
binlog-do-db=mydb2
# # bin log 日志格式
# #STATEMENT:記錄主庫執行的SQL復制到從庫; 調用時間函數時會導致主從數據不一致
# #ROW:記錄主庫每一行的變化;效率低
# #MIXED:修復一些主從數據不一致情況;本地變量調用還會存在問題;@@hostname
binlog_format=statement
# #二進制日志自動刪除/過期的天數。默認值為0,表示不自動刪除
expire_logs_days=7
# #跳過主從復制中遇到的所有錯誤或指定類型的錯誤
slave_skip_errors=1062
# #在作為從數據庫時候,有寫入操作也要更新二進制日志文件
log-slave-updates
# #標識自增長字段每次遞增的量,也就是步長
auto-increment-increment=2
# #表示自增長從哪個數開始
auto-increment-offset=2
主1主2配置的不同地方在:server-id ?和 auto-increment-offset?
?
從1 my.cnf 添加如下配置
# 服務id
server-id=2
# #啟用中繼日志
relay-log=mysql-relay
# 服務id
server-id=2
# #啟用中繼日志
relay-log=mysql-relay
從2 my.cnf 添加如下配置
# 服務id
server-id=4
# #啟用中繼日志
relay-log=mysql-relay